zabbix_export:
  version: '7.0'
  template_groups:
    - uuid: e960332b3f6c46a1956486d4f3f99fce
      name: 'Templates/Server hardware'
  templates:
    - uuid: 1772f3804276445c945650813c590a2d
      template: 'Graviton by HTTP'
      name: 'Graviton by HTTP'
      description: |
        Template for monitoring Graviton BMC by Redfish API
        
        By Maxim.M.Demichev
      groups:
        - name: 'Templates/Server hardware'
      items:
        - uuid: 4f34d1c074014916a3507c60dd8b6c3c
          name: 'Drives Sensors'
          type: DEPENDENT
          key: graviton.sensors.drives
          delay: '0'
          history: '0'
          trends: '0'
          value_type: TEXT
          description: 'Сенсоры дисков'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function request(url) {
                      api_request = new HttpRequest();
                      api_request.addHeader('Authorization: Basic ' + btoa(params.user + ':' + params.password));
                      Zabbix.Log(4, '[ GRAVITON ] Sending request: ' + url);
                  
                      try {
                          response = api_request.get(url);
                      } catch (error) {
                          Zabbix.Log(4, '[ GRAVITON ] Get request returned error ' + error);
                          throw 'Get request returned error ' + error + '. Check debug log for more information.';
                      }
                  
                      Zabbix.Log(4, '[ GRAVITON ] Received response with status code ' +
                          api_request.getStatus() + '\n' + response);
                  
                      if (api_request.getStatus() !== 200) {
                          var message = 'Request failed with status code ' + api_request.getStatus();
                          if (response !== null) {
                              if (typeof response.message === 'string') {
                                  message += ': ' + response.message;
                              }
                          }
                  
                          throw message + ' Check debug log for more information.';
                      }
                  
                      if (response !== null) {
                          try {
                              response = JSON.parse(response);
                          }
                          catch (error) {
                              Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                              response = null;
                          }
                      }
                  
                      return {
                          status: api_request.getStatus(),
                          body: response
                      };
                  }
                  
                  function getField(object, field, def) {
                      var names = field.split('.');
                      var name = names.shift();
                  
                      while (typeof name !== 'undefined') {
                          if (typeof object === undefined || typeof object[name] === 'undefined') {
                              return def;
                          }
                  
                          object = object[name];
                          name = names.shift();
                      }
                  
                      return object;
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var params = {
                      url: '{$API.URL}',
                      user: '{$API.USER}',
                      password: '{$API.PASSWORD}'
                  };
                  
                  var result = [];
                  
                  var storage_units = sensors;
                  
                  if (storage_units instanceof Array) {
                      storage_units.forEach(function (storage_unit) {
                          var storage_unit_name = storage_unit.body.Name;
                  
                          if (storage_unit.body.Drives instanceof Array) {
                              storage_unit.body.Drives.forEach(function (drive) {
                                  response = request(params.url + drive["@odata.id"]);
                                  result.push({
                                      'StorageUnit': storage_unit_name, 
                                      'Name': response.body.Name, 
                                      'Model': response.body.Model, 
                                      'CapacityBytes': response.body.CapacityBytes,
                                      'Health': response.body.Status.Health, 
                                      'State': response.body.Status.State
                                  });
                              });
                          }
                      });
                  }
                  
                  return JSON.stringify(result);
          master_item:
            key: graviton.sensors.storage
          tags:
            - tag: Application
              value: disk_drives
            - tag: Application
              value: storage
        - uuid: 322d14d54fae448b8b29b45cbbdf1ea6
          name: 'Graviton: Get Ethernet Sensors'
          type: HTTP_AGENT
          key: graviton.sensors.ethernet
          delay: 5m
          history: '0'
          trends: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$API.USER}'
          password: '{$API.PASSWORD}'
          description: 'Сенсоры интерфейсов Ethernet'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function request(url) {
                      api_request = new HttpRequest();
                      api_request.addHeader('Authorization: Basic ' + btoa(params.user + ':' + params.password));
                      Zabbix.Log(4, '[ GRAVITON ] Sending request: ' + url);
                  
                      try {
                          response = api_request.get(url);
                      } catch (error) {
                          Zabbix.Log(4, '[ GRAVITON ] Get request returned error ' + error);
                          throw 'Get request returned error ' + error + '. Check debug log for more information.';
                      }
                  
                      Zabbix.Log(4, '[ GRAVITON ] Received response with status code ' +
                          api_request.getStatus() + '\n' + response);
                  
                      if (api_request.getStatus() !== 200) {
                          var message = 'Request failed with status code ' + api_request.getStatus();
                          if (response !== null) {
                              if (typeof response.message === 'string') {
                                  message += ': ' + response.message;
                              }
                          }
                  
                          throw message + ' Check debug log for more information.';
                      }
                  
                      if (response !== null) {
                          try {
                              response = JSON.parse(response);
                          }
                          catch (error) {
                              Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                              response = null;
                          }
                      }
                  
                      return {
                          status: api_request.getStatus(),
                          body: response
                      };
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var params = {
                      url: '{$API.URL}',
                      user: '{$API.USER}',
                      password: '{$API.PASSWORD}'
                  };
                  var result = [];
                  
                  var index = params.url.indexOf('://');
                  index = params.url.indexOf('/', (index !== -1) ? (index + 3) : 0);
                  if (index !== -1) {
                      params.url = params.url.substring(0, index);
                  }
                  
                  if (sensors.Members instanceof Array) {
                      sensors.Members.forEach(function (sensor) {
                          if (typeof sensor["@odata.id"] === 'string') {
                              response = request(params.url + sensor["@odata.id"]);
                              if (true) {
                                  if (typeof response.body.Name === 'string') {
                                      result.push({ 
                                        'Name': response.body.Name, 
                                        'LinkStatus': response.body.LinkStatus,
                                        'Health': response.body.Status.Health, 
                                        'State': response.body.Status.State
                                      });
                                  }
                              }
                          }
                      });
                  }
                  
                  return JSON.stringify(result);
          timeout: 30s
          url: '{$API.URL}/redfish/v1/Systems/Self/EthernetInterfaces'
          tags:
            - tag: Application
              value: ethernet
            - tag: Application
              value: raw
        - uuid: c69a8535f94d4276b5e6c1aabdf10fef
          name: 'Fan Sensors'
          type: DEPENDENT
          key: graviton.sensors.fans
          delay: '0'
          history: '0'
          trends: '0'
          value_type: TEXT
          description: 'Сенсоры вентиляторов'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function getField(object, field, def) {
                      var names = field.split('.');
                      var name = names.shift();
                  
                      while (typeof name !== 'undefined') {
                          if (typeof object === undefined || typeof object[name] === 'undefined') {
                              return def;
                          }
                  
                          object = object[name];
                          name = names.shift();
                      }
                  
                      return object;
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var result = [];
                  
                  if (sensors.Fans instanceof Array) {
                      sensors.Fans.forEach(function (sensor) {
                          if (typeof sensor["@odata.id"] === 'string') {
                              if (getField(sensor, 'PhysicalContext', '') === 'Fan') {
                                  result.push(
                                    { 
                                      'Name': getField(sensor, 'Name', ''),
                                      'LowerThresholdCritical': getField(sensor, 'LowerThresholdCritical', ''),
                                      'LowerThresholdFatal': getField(sensor, 'LowerThresholdFatal', ''),
                                      'LowerThresholdNonCritical': getField(sensor, 'LowerThresholdNonCritical', ''),
                                      'UpperThresholdCritical': getField(sensor, 'UpperThresholdCritical', ''),
                                      'UpperThresholdFatal': getField(sensor, 'UpperThresholdFatal', ''),
                                      'UpperThresholdNonCritical': getField(sensor, 'UpperThresholdNonCritical', ''),
                                      'Reading': getField(sensor, 'Reading', ''),
                                      'Health': getField(sensor, 'Status.Health', ''),
                                      'State': getField(sensor, 'Status.State', '')
                                    }
                                  );
                              }
                          }
                      });
                  }
                  
                  return JSON.stringify(result);
          master_item:
            key: graviton.sensors.thermal
          tags:
            - tag: Application
              value: fans
            - tag: Application
              value: thermal
        - uuid: 7e3f1eb8620941708ac4200fc9677675
          name: 'Graviton: Get Memory Sensors'
          type: HTTP_AGENT
          key: graviton.sensors.memory
          delay: 5m
          history: '0'
          trends: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$API.USER}'
          password: '{$API.PASSWORD}'
          description: 'Сенсоры оперативной памяти'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function request(url) {
                      api_request = new HttpRequest();
                      api_request.addHeader('Authorization: Basic ' + btoa(params.user + ':' + params.password));
                      Zabbix.Log(4, '[ GRAVITON ] Sending request: ' + url);
                  
                      try {
                          response = api_request.get(url);
                      } catch (error) {
                          Zabbix.Log(4, '[ GRAVITON ] Get request returned error ' + error);
                          throw 'Get request returned error ' + error + '. Check debug log for more information.';
                      }
                  
                      Zabbix.Log(4, '[ GRAVITON ] Received response with status code ' +
                          api_request.getStatus() + '\n' + response);
                  
                      if (api_request.getStatus() !== 200) {
                          var message = 'Request failed with status code ' + api_request.getStatus();
                          if (response !== null) {
                              if (typeof response.message === 'string') {
                                  message += ': ' + response.message;
                              }
                          }
                  
                          throw message + ' Check debug log for more information.';
                      }
                  
                      if (response !== null) {
                          try {
                              response = JSON.parse(response);
                          }
                          catch (error) {
                              Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                              response = null;
                          }
                      }
                  
                      return {
                          status: api_request.getStatus(),
                          body: response
                      };
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var params = {
                      url: '{$API.URL}',
                      user: '{$API.USER}',
                      password: '{$API.PASSWORD}'
                  };
                  var result = [];
                  
                  var index = params.url.indexOf('://');
                  index = params.url.indexOf('/', (index !== -1) ? (index + 3) : 0);
                  if (index !== -1) {
                      params.url = params.url.substring(0, index);
                  }
                  
                  if (sensors.Members instanceof Array) {
                      sensors.Members.forEach(function (sensor) {
                          if (typeof sensor["@odata.id"] === 'string') {
                              response = request(params.url + sensor["@odata.id"]);
                              if (true) {
                                  if (typeof response.body.Name === 'string') {
                                      result.push({ 
                                        'Name': response.body.Name, 
                                        'CapacityMiB': response.body.CapacityMiB,
                                        'Health': response.body.Status.Health, 
                                        'State': response.body.Status.State
                                      });
                                  }
                              }
                          }
                      });
                  }
                  
                  return JSON.stringify(result);
          timeout: 30s
          url: '{$API.URL}/redfish/v1/Systems/Self/Memory'
          tags:
            - tag: Application
              value: memory
            - tag: Application
              value: raw
        - uuid: 547dd5bb56734e43a558eccb8ec56184
          name: 'Graviton: Get Network Adapter Sensors'
          type: HTTP_AGENT
          key: graviton.sensors.net_adapters
          delay: 5m
          history: '0'
          trends: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$API.USER}'
          password: '{$API.PASSWORD}'
          description: 'Сенсоры сетевых адаптеров'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function request(url) {
                      api_request = new HttpRequest();
                      api_request.addHeader('Authorization: Basic ' + btoa(params.user + ':' + params.password));
                      Zabbix.Log(4, '[ GRAVITON ] Sending request: ' + url);
                  
                      try {
                          response = api_request.get(url);
                      } catch (error) {
                          Zabbix.Log(4, '[ GRAVITON ] Get request returned error ' + error);
                          throw 'Get request returned error ' + error + '. Check debug log for more information.';
                      }
                  
                      Zabbix.Log(4, '[ GRAVITON ] Received response with status code ' +
                          api_request.getStatus() + '\n' + response);
                  
                      if (api_request.getStatus() !== 200) {
                          var message = 'Request failed with status code ' + api_request.getStatus();
                          if (response !== null) {
                              if (typeof response.message === 'string') {
                                  message += ': ' + response.message;
                              }
                          }
                  
                          throw message + ' Check debug log for more information.';
                      }
                  
                      if (response !== null) {
                          try {
                              response = JSON.parse(response);
                          }
                          catch (error) {
                              Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                              response = null;
                          }
                      }
                  
                      return {
                          status: api_request.getStatus(),
                          body: response
                      };
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var params = {
                      url: '{$API.URL}',
                      user: '{$API.USER}',
                      password: '{$API.PASSWORD}'
                  };
                  var result = [];
                  
                  var index = params.url.indexOf('://');
                  index = params.url.indexOf('/', (index !== -1) ? (index + 3) : 0);
                  if (index !== -1) {
                      params.url = params.url.substring(0, index);
                  }
                  
                  if (sensors.Members instanceof Array) {
                      sensors.Members.forEach(function (sensor) {
                          if (typeof sensor["@odata.id"] === 'string') {
                              response = request(params.url + sensor["@odata.id"]);
                              if (true) {
                                  if (typeof response.body.Name === 'string') {
                                      result.push({ 
                                        'Name': response.body.Name, 
                                        'LinkStatus': response.body.LinkStatus,
                                        'Health': response.body.Status.Health, 
                                        'State': response.body.Status.State
                                      });
                                  }
                              }
                          }
                      });
                  }
                  
                  return JSON.stringify(result);
          timeout: 30s
          url: '{$API.URL}/redfish/v1/Chassis/Self/NetworkAdapters'
          tags:
            - tag: Application
              value: network_adapters
            - tag: Application
              value: raw
        - uuid: 3841ba62afa64f989a8814d027854ed6
          name: 'Graviton: Get Power Sensors'
          type: HTTP_AGENT
          key: graviton.sensors.power
          delay: 5m
          history: '0'
          trends: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$API.USER}'
          password: '{$API.PASSWORD}'
          description: 'Сенсоры электропитания'
          timeout: 30s
          url: '{$API.URL}/redfish/v1/Chassis/Self/Power'
          tags:
            - tag: Application
              value: power
            - tag: Application
              value: raw
        - uuid: 994df3f0dde64893a3f30fddb854af5f
          name: 'Power Supplies Sensors'
          type: DEPENDENT
          key: graviton.sensors.power_supplies
          delay: '0'
          history: '0'
          trends: '0'
          value_type: TEXT
          description: 'Сенсоры источников питания'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function getField(object, field, def) {
                      var names = field.split('.');
                      var name = names.shift();
                  
                      while (typeof name !== 'undefined') {
                          if (typeof object === undefined || typeof object[name] === 'undefined') {
                              return def;
                          }
                  
                          object = object[name];
                          name = names.shift();
                      }
                  
                      return object;
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var result = [];
                  
                  if (sensors.PowerSupplies instanceof Array) {
                      sensors.PowerSupplies.forEach(function (sensor) {
                          if (typeof sensor["@odata.id"] === 'string') {
                              if (true) {
                                  result.push(
                                    { 
                                      'Name': getField(sensor, 'Name', ''),
                                      'Fan_1': getField(sensor, 'Fan_1', ''),
                                      'Fan_2': getField(sensor, 'Fan_2', ''),
                                      'LineInputCurrent': getField(sensor, 'LineInputCurrent', ''),
                                      'LineInputVoltage': getField(sensor, 'LineInputVoltage', ''),
                                      'LineInputWatts': getField(sensor, 'LineInputWatts', ''),
                                      'PowerCapacityCurrent': getField(sensor, 'PowerCapacityCurrent', ''),
                                      'PowerCapacityVoltage': getField(sensor, 'PowerCapacityVoltage', ''),
                                      'PowerCapacityWatts': getField(sensor, 'PowerCapacityWatts', ''),
                                      'PowerOutputCurrent': getField(sensor, 'PowerOutputCurrent', ''),
                                      'PowerOutputVoltage': getField(sensor, 'PowerOutputVoltage', ''),
                                      'PowerOutputWatts': getField(sensor, 'PowerOutputWatts', ''),
                                      'Temperature_1': getField(sensor, 'Temperature_1', ''),
                                      'Temperature_2': getField(sensor, 'Temperature_2', ''),
                                      'Health': getField(sensor, 'Status.Health', ''),
                                      'Health': getField(sensor, 'Status.Health', ''),
                                      'State': getField(sensor, 'Status.State', '')
                                    }
                                  );
                              }
                          }
                      });
                  }
                  
                  return JSON.stringify(result);
          master_item:
            key: graviton.sensors.power
          tags:
            - tag: Application
              value: power
            - tag: Application
              value: power_supplies
        - uuid: 442ef33a465b44fb8cff1a220e0947a5
          name: 'Graviton: Get Processors Sensors'
          type: HTTP_AGENT
          key: graviton.sensors.processors
          delay: 5m
          history: '0'
          trends: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$API.USER}'
          password: '{$API.PASSWORD}'
          description: 'Сенсоры процессоров'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function request(url) {
                      api_request = new HttpRequest();
                      api_request.addHeader('Authorization: Basic ' + btoa(params.user + ':' + params.password));
                      Zabbix.Log(4, '[ GRAVITON ] Sending request: ' + url);
                  
                      try {
                          response = api_request.get(url);
                      } catch (error) {
                          Zabbix.Log(4, '[ GRAVITON ] Get request returned error ' + error);
                          throw 'Get request returned error ' + error + '. Check debug log for more information.';
                      }
                  
                      Zabbix.Log(4, '[ GRAVITON ] Received response with status code ' +
                          api_request.getStatus() + '\n' + response);
                  
                      if (api_request.getStatus() !== 200) {
                          var message = 'Request failed with status code ' + api_request.getStatus();
                          if (response !== null) {
                              if (typeof response.message === 'string') {
                                  message += ': ' + response.message;
                              }
                          }
                  
                          throw message + ' Check debug log for more information.';
                      }
                  
                      if (response !== null) {
                          try {
                              response = JSON.parse(response);
                          }
                          catch (error) {
                              Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                              response = null;
                          }
                      }
                  
                      return {
                          status: api_request.getStatus(),
                          body: response
                      };
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var params = {
                      url: '{$API.URL}',
                      user: '{$API.USER}',
                      password: '{$API.PASSWORD}'
                  };
                  var result = [];
                  
                  var index = params.url.indexOf('://');
                  index = params.url.indexOf('/', (index !== -1) ? (index + 3) : 0);
                  if (index !== -1) {
                      params.url = params.url.substring(0, index);
                  }
                  
                  
                  if (sensors.Members instanceof Array) {
                      // Проходка в цикле по всем Storage Unit
                  
                      sensors.Members.forEach(function (sensor) {
                          // Для каждого Storage Unit выполняем отдельный запрос на получение его сенсоров
                  
                          if (typeof sensor["@odata.id"] === 'string') {
                              var response = request(params.url + sensor["@odata.id"]);
                              if (true) {
                                  if (typeof response.body.Name === 'string') {
                                      result.push({ 
                                        'Name': response.body.Name, 
                                        'Model': response.body.Model,
                                        'TotalCores': response.body.TotalCores, 
                                        'TotalThreads': response.body.TotalThreads,
                                        'Health': response.body.Status.Health, 
                                        'State': response.body.Status.State
                                      });
                                  }
                              }
                          }
                      });
                  }
                  
                  return JSON.stringify(result);
          timeout: 30s
          url: '{$API.URL}/redfish/v1/Systems/Self/Processors'
          tags:
            - tag: Application
              value: processors
            - tag: Application
              value: raw
        - uuid: 19a5050c04d84b9db993003273f60f22
          name: 'Graviton: Get Storage Sensors'
          type: HTTP_AGENT
          key: graviton.sensors.storage
          delay: 5m
          history: '0'
          trends: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$API.USER}'
          password: '{$API.PASSWORD}'
          description: 'Сенсоры систем хранения данных'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function request(url) {
                      api_request = new HttpRequest();
                      api_request.addHeader('Authorization: Basic ' + btoa(params.user + ':' + params.password));
                      Zabbix.Log(4, '[ GRAVITON ] Sending request: ' + url);
                  
                      try {
                          response = api_request.get(url);
                      } catch (error) {
                          Zabbix.Log(4, '[ GRAVITON ] Get request returned error ' + error);
                          throw 'Get request returned error ' + error + '. Check debug log for more information.';
                      }
                  
                      Zabbix.Log(4, '[ GRAVITON ] Received response with status code ' +
                          api_request.getStatus() + '\n' + response);
                  
                      if (api_request.getStatus() !== 200) {
                          var message = 'Request failed with status code ' + api_request.getStatus();
                          if (response !== null) {
                              if (typeof response.message === 'string') {
                                  message += ': ' + response.message;
                              }
                          }
                  
                          throw message + ' Check debug log for more information.';
                      }
                  
                      if (response !== null) {
                          try {
                              response = JSON.parse(response);
                          }
                          catch (error) {
                              Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                              response = null;
                          }
                      }
                  
                      return {
                          status: api_request.getStatus(),
                          body: response
                      };
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var params = {
                      url: '{$API.URL}',
                      user: '{$API.USER}',
                      password: '{$API.PASSWORD}'
                  };
                  var result = [];
                  
                  var index = params.url.indexOf('://');
                  index = params.url.indexOf('/', (index !== -1) ? (index + 3) : 0);
                  if (index !== -1) {
                      params.url = params.url.substring(0, index);
                  }
                  
                  
                  if (sensors.Members instanceof Array) {
                      // Проходка в цикле по всем Storage Unit
                  
                      sensors.Members.forEach(function (sensor) {
                          // Для каждого Storage Unit выполняем отдельный запрос на получение его сенсоров
                  
                          if (typeof sensor["@odata.id"] === 'string') {
                              var response = request(params.url + sensor["@odata.id"]);
                              result.push(response);
                          }
                      });
                  }
                  
                  return JSON.stringify(result);
          timeout: 30s
          url: '{$API.URL}/redfish/v1/Systems/Self/Storage'
          tags:
            - tag: Application
              value: raw
            - tag: Application
              value: storage
        - uuid: 6523c515610a400ba1a560b466baf1eb
          name: 'Storage Controllers Sensors'
          type: DEPENDENT
          key: graviton.sensors.storage_controllers
          delay: '0'
          history: '0'
          trends: '0'
          value_type: TEXT
          description: 'Сенсоры контроллеров СХД'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function getField(object, field, def) {
                      var names = field.split('.');
                      var name = names.shift();
                  
                      while (typeof name !== 'undefined') {
                          if (typeof object === undefined || typeof object[name] === 'undefined') {
                              return def;
                          }
                  
                          object = object[name];
                          name = names.shift();
                      }
                  
                      return object;
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var result = [];
                  
                  
                  
                  var storage_units = sensors;
                  
                  if (storage_units instanceof Array) {
                      storage_units.forEach(function (storage_unit) {
                          var storage_unit_name = storage_unit.body.Name;
                  
                          if (storage_unit.body.StorageControllers instanceof Array) {
                              storage_unit.body.StorageControllers.forEach(function (sensor) {
                                  if (typeof sensor["@odata.id"] === 'string') {
                                      if (true) {
                                          result.push(
                                            { 
                                              'Name': getField(sensor, 'Name', ''),
                                              'Health': getField(sensor, 'Status.Health', ''),
                                              'State': getField(sensor, 'Status.State', '')
                                            }
                                          );
                                      }
                                  }
                              });
                          }
                      });
                  }
                  
                  
                  return JSON.stringify(result);
          master_item:
            key: graviton.sensors.storage
          tags:
            - tag: Application
              value: storage
            - tag: Application
              value: storage_controllers
        - uuid: 3435899bc7204b7dab7e82f2db9f329a
          name: 'Temperature Sensors'
          type: DEPENDENT
          key: graviton.sensors.temp
          delay: '0'
          history: '0'
          trends: '0'
          value_type: TEXT
          description: 'Сенсоры вентиляторов'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function getField(object, field, def) {
                      var names = field.split('.');
                      var name = names.shift();
                  
                      while (typeof name !== 'undefined') {
                          if (typeof object === undefined || typeof object[name] === 'undefined') {
                              return def;
                          }
                  
                          object = object[name];
                          name = names.shift();
                      }
                  
                      return object;
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var result = [];
                  
                  if (sensors.Temperatures instanceof Array) {
                      sensors.Temperatures.forEach(function (sensor) {
                          if (typeof sensor["@odata.id"] === 'string') {
                              if (true) {
                                  result.push(
                                    { 
                                      'Name': getField(sensor, 'Name', ''),
                                      'LowerThresholdCritical': getField(sensor, 'LowerThresholdCritical', ''),
                                      'LowerThresholdFatal': getField(sensor, 'LowerThresholdFatal', ''),
                                      'LowerThresholdNonCritical': getField(sensor, 'LowerThresholdNonCritical', ''),
                                      'UpperThresholdCritical': getField(sensor, 'UpperThresholdCritical', ''),
                                      'UpperThresholdFatal': getField(sensor, 'UpperThresholdFatal', ''),
                                      'UpperThresholdNonCritical': getField(sensor, 'UpperThresholdNonCritical', ''),
                                      'ReadingCelsius': getField(sensor, 'ReadingCelsius', ''),
                                      'Health': getField(sensor, 'Status.Health', ''),
                                      'State': getField(sensor, 'Status.State', '')
                                    }
                                  );
                              }
                          }
                      });
                  }
                  
                  return JSON.stringify(result);
          master_item:
            key: graviton.sensors.thermal
          tags:
            - tag: Application
              value: temperature
            - tag: Application
              value: thermal
        - uuid: d7dd2a8681a54411967e892df1be390c
          name: 'Graviton: Get Thermal Sensors'
          type: HTTP_AGENT
          key: graviton.sensors.thermal
          delay: 5m
          history: '0'
          trends: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$API.USER}'
          password: '{$API.PASSWORD}'
          description: 'Сенсоры температуры и вентиляторов'
          timeout: 30s
          url: '{$API.URL}/redfish/v1/Chassis/Self/Thermal'
          tags:
            - tag: Application
              value: raw
            - tag: Application
              value: thermal
        - uuid: 5b0d24ce932d4a62b81ff7eac8724db9
          name: 'Voltage Sensors'
          type: DEPENDENT
          key: graviton.sensors.voltage
          delay: '0'
          history: '0'
          trends: '0'
          value_type: TEXT
          description: 'Сенсоры напряжения'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function getField(object, field, def) {
                      var names = field.split('.');
                      var name = names.shift();
                  
                      while (typeof name !== 'undefined') {
                          if (typeof object === undefined || typeof object[name] === 'undefined') {
                              return def;
                          }
                  
                          object = object[name];
                          name = names.shift();
                      }
                  
                      return object;
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var result = [];
                  
                  if (sensors.Voltages instanceof Array) {
                      sensors.Voltages.forEach(function (sensor) {
                          if (typeof sensor["@odata.id"] === 'string') {
                              if (true) {
                                  result.push(
                                    { 
                                      'Name': getField(sensor, 'Name', ''),
                  
                                      'LowerThresholdCritical': getField(sensor, 'LowerThresholdCritical', ''),
                                      'LowerThresholdFatal': getField(sensor, 'LowerThresholdFatal', ''),
                                      'LowerThresholdNonCritical': getField(sensor, 'LowerThresholdNonCritical', ''),
                  
                                      'UpperThresholdCritical': getField(sensor, 'UpperThresholdCritical', ''),
                                      'UpperThresholdFatal': getField(sensor, 'UpperThresholdFatal', ''),
                                      'UpperThresholdNonCritical': getField(sensor, 'UpperThresholdNonCritical', ''),
                  
                                      'ReadingVolts': getField(sensor, 'ReadingVolts', ''),
                                      'Health': getField(sensor, 'Status.Health', ''),
                                      'State': getField(sensor, 'Status.State', '')
                                    }
                                  );
                              }
                          }
                      });
                  }
                  
                  return JSON.stringify(result);
          master_item:
            key: graviton.sensors.power
          tags:
            - tag: Application
              value: power
            - tag: Application
              value: voltage
        - uuid: 984c0b68dc4f4281bde2cf68d84bdd9f
          name: 'Volumes Sensors'
          type: DEPENDENT
          key: graviton.sensors.volumes
          delay: '0'
          history: '0'
          trends: '0'
          value_type: TEXT
          description: 'Сенсоры логических томов'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function request(url) {
                      api_request = new HttpRequest();
                      api_request.addHeader('Authorization: Basic ' + btoa(params.user + ':' + params.password));
                      Zabbix.Log(4, '[ GRAVITON ] Sending request: ' + url);
                  
                      try {
                          response = api_request.get(url);
                      } catch (error) {
                          Zabbix.Log(4, '[ GRAVITON ] Get request returned error ' + error);
                          throw 'Get request returned error ' + error + '. Check debug log for more information.';
                      }
                  
                      Zabbix.Log(4, '[ GRAVITON ] Received response with status code ' +
                          api_request.getStatus() + '\n' + response);
                  
                      if (api_request.getStatus() !== 200) {
                          var message = 'Request failed with status code ' + api_request.getStatus();
                          if (response !== null) {
                              if (typeof response.message === 'string') {
                                  message += ': ' + response.message;
                              }
                          }
                  
                          throw message + ' Check debug log for more information.';
                      }
                  
                      if (response !== null) {
                          try {
                              response = JSON.parse(response);
                          }
                          catch (error) {
                              Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                              response = null;
                          }
                      }
                  
                      return {
                          status: api_request.getStatus(),
                          body: response
                      };
                  }
                  
                  function getField(object, field, def) {
                      var names = field.split('.');
                      var name = names.shift();
                  
                      while (typeof name !== 'undefined') {
                          if (typeof object === undefined || typeof object[name] === 'undefined') {
                              return def;
                          }
                  
                          object = object[name];
                          name = names.shift();
                      }
                  
                      return object;
                  }
                  
                  try {
                      sensors = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      sensors = null;
                  }
                  
                  var params = {
                      url: '{$API.URL}',
                      user: '{$API.USER}',
                      password: '{$API.PASSWORD}'
                  };
                  
                  var result = [];
                  
                  var storage_units = sensors;
                  
                  if (storage_units instanceof Array) {
                      storage_units.forEach(function (storage_unit) {
                          var storage_unit_name = storage_unit.body.Name;
                          
                          // Предположительно на контроллере может существовать только одна коллекция вольюмов
                          var volume_collection = storage_unit.body.Volumes["@odata.id"];
                          
                          var response = request(params.url + volume_collection);
                          if (response.body.Members instanceof Array) {
                              response.body.Members.forEach(function (volume) {
                                  response = request(params.url + volume["@odata.id"]);
                                  if (typeof response.body.Name === 'string') {
                                      result.push({
                                          'Storageunit': storage_unit_name, 
                                          'Name': response.body.Name, 
                                          'CapacityBytes': response.body.CapacityBytes,
                                          'Health': response.body.Status.Health, 
                                          'State': response.body.Status.State
                                      });
                                   }
                               });
                           }
                      });
                  }
                  
                  return JSON.stringify(result);
          master_item:
            key: graviton.sensors.storage
          tags:
            - tag: Application
              value: logical_volumes
            - tag: Application
              value: storage
        - uuid: f81805891ae34e4a923352c77f1a2ec1
          name: 'Firmware version'
          type: DEPENDENT
          key: graviton.server.firmware
          delay: '0'
          history: 7d
          trends: '0'
          value_type: CHAR
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.firmware
          master_item:
            key: graviton.server.system
          tags:
            - tag: Application
              value: system
          triggers:
            - uuid: 93b3f9742fc244c09ae2dfbf4f35952f
              expression: 'change(/Graviton by HTTP/graviton.server.firmware)=1'
              name: 'Graviton server firmware version was changed to [{ITEM.VALUE}]'
              priority: INFO
              manual_close: 'YES'
              tags:
                - tag: component
                  value: system
        - uuid: e946976eef8744499902f40a96ed8b0f
          name: 'Overall system health status'
          type: DEPENDENT
          key: graviton.server.health
          delay: '0'
          history: 7d
          trends: '0'
          value_type: CHAR
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.status
          master_item:
            key: graviton.server.system
          tags:
            - tag: Application
              value: system
          triggers:
            - uuid: 7f4a5e36f03d428288049f7e693c2a4a
              expression: 'change(/Graviton by HTTP/graviton.server.health)=1'
              name: 'Graviton server health was changed to [{ITEM.VALUE}]'
              priority: WARNING
              manual_close: 'YES'
              tags:
                - tag: component
                  value: system
        - uuid: cb2cd520736b477e9fc236dd765bc721
          name: 'Hardware model name'
          type: DEPENDENT
          key: graviton.server.hw.model
          delay: '0'
          history: 7d
          trends: '0'
          value_type: CHAR
          inventory_link: MODEL
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.model
          master_item:
            key: graviton.server.system
          tags:
            - tag: Application
              value: system
          triggers:
            - uuid: 2fbefb81d63849d19728f6b515e0d64a
              expression: 'change(/Graviton by HTTP/graviton.server.hw.model)=1'
              name: 'Graviton server model was changed to [{ITEM.VALUE}]'
              priority: AVERAGE
              manual_close: 'YES'
              tags:
                - tag: component
                  value: system
        - uuid: ec37c0542ce34a6986f52f211d8019da
          name: 'Hardware serial number'
          type: DEPENDENT
          key: graviton.server.hw.serialnumber
          delay: '0'
          history: 7d
          trends: '0'
          value_type: CHAR
          inventory_link: SERIALNO_A
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.serialnumber
          master_item:
            key: graviton.server.system
          tags:
            - tag: Application
              value: system
          triggers:
            - uuid: 2d2ae205b3bc4bf1a19b84e21893eef9
              expression: 'change(/Graviton by HTTP/graviton.server.hw.serialnumber)=1'
              name: 'Graviton server serial number was changed to [{ITEM.VALUE}]'
              priority: AVERAGE
              manual_close: 'YES'
              tags:
                - tag: component
                  value: system
        - uuid: 774d9a33facf40a49797a64cea879bfa
          name: 'Indicator LED State'
          type: DEPENDENT
          key: graviton.server.indicator_led
          delay: '0'
          history: 7d
          trends: '0'
          value_type: CHAR
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.led
          master_item:
            key: graviton.server.system
          tags:
            - tag: Application
              value: system
          triggers:
            - uuid: 95f59932452e47a9aa8c3ca74871175b
              expression: 'change(/Graviton by HTTP/graviton.server.indicator_led)=1'
              name: 'Graviton LED state was changed to [{ITEM.VALUE}]'
              priority: WARNING
              type: MULTIPLE
              manual_close: 'YES'
              tags:
                - tag: component
                  value: system
        - uuid: 38a41c98a89d4822915c95dccbef675a
          name: 'Overall system state'
          type: DEPENDENT
          key: graviton.server.state
          delay: '0'
          history: 7d
          trends: '0'
          value_type: CHAR
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.state
          master_item:
            key: graviton.server.system
          tags:
            - tag: Application
              value: system
          triggers:
            - uuid: 668617f0849b4d35a666f2a5215f5aba
              expression: 'last(/Graviton by HTTP/graviton.server.state)="Disabled"'
              name: 'Graviton server health was changed to [Disabled]'
              priority: AVERAGE
              manual_close: 'YES'
              tags:
                - tag: component
                  value: system
            - uuid: d5cc417cfaef4f4ea2470283a1e0b7bd
              expression: 'change(/Graviton by HTTP/graviton.server.state)=1'
              name: 'Graviton server state was changed to [{ITEM.VALUE}]'
              priority: WARNING
              manual_close: 'YES'
              dependencies:
                - name: 'Graviton server health was changed to [Disabled]'
                  expression: 'last(/Graviton by HTTP/graviton.server.state)="Disabled"'
              tags:
                - tag: component
                  value: system
        - uuid: 047e5091739840169c89f5d76d86a35f
          name: 'Overall system health status'
          type: DEPENDENT
          key: graviton.server.status
          delay: '0'
          history: 7d
          trends: '0'
          value_type: CHAR
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.status
          master_item:
            key: graviton.server.system
          tags:
            - tag: Application
              value: system
        - uuid: 18015206b82e4367b01c2c20d92b755c
          name: 'Graviton: Get System'
          type: HTTP_AGENT
          key: graviton.server.system
          delay: 5m
          history: '0'
          trends: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$API.USER}'
          password: '{$API.PASSWORD}'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  function request(url) {
                      api_request = new HttpRequest();
                      api_request.addHeader('Authorization: Basic ' + btoa(params.user + ':' + params.password));
                      Zabbix.Log(4, '[ GRAVITON ] Sending request: ' + url);
                  
                      try {
                          response = api_request.get(url);
                      } catch (error) {
                          Zabbix.Log(4, '[ GRAVITON ] Get request returned error ' + error);
                          throw 'Get request returned error ' + error + '. Check debug log for more information.';
                      }
                  
                      Zabbix.Log(4, '[ GRAVITON ] Received response with status code ' +
                          api_request.getStatus() + '\n' + response);
                  
                      if (api_request.getStatus() !== 200) {
                          var message = 'Request failed with status code ' + api_request.getStatus();
                          if (response !== null) {
                              if (typeof response.message === 'string') {
                                  message += ': ' + response.message;
                              }
                          }
                  
                          throw message + ' Check debug log for more information.';
                      }
                  
                      if (response !== null) {
                          try {
                              response = JSON.parse(response);
                          }
                          catch (error) {
                              Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                              response = null;
                          }
                      }
                  
                      return {
                          status: api_request.getStatus(),
                          body: response
                      };
                  }
                  
                  function getField(object, field, def) {
                      var names = field.split('.');
                      var name = names.shift();
                  
                      while (typeof name !== 'undefined') {
                          if (typeof object === undefined || typeof object[name] === 'undefined') {
                              return def;
                          }
                  
                          object = object[name];
                          name = names.shift();
                      }
                  
                      return object;
                  }
                  
                  try {
                      system = JSON.parse(value);
                  }
                  catch (error) {
                      Zabbix.Log(4, '[ GRAVITON ] Failed to parse response.');
                      system = null;
                  }
                  
                  var params = {
                      url: '{$API.URL}',
                      user: '{$API.USER}',
                      password: '{$API.PASSWORD}'
                  };
                  var result = {
                      model: '',
                      serialnumber: '',
                      status: '',
                      firmware: ''
                  };
                  
                  var index = params.url.indexOf('://');
                  index = params.url.indexOf('/', (index !== -1) ? (index + 3) : 0);
                  if (index !== -1) {
                      params.url = params.url.substring(0, index);
                  }
                  
                  result.model = getField(system, 'Model', '');
                  result.serialnumber = getField(system, 'SerialNumber', '');
                  result.status = getField(system, 'Status.Health', '');
                  result.state = getField(system, 'Status.State', '');
                  result.led = getField(system, 'IndicatorLED', '');
                  
                  response = request(params.url + '/redfish/v1/Managers/Self');
                  result.firmware = getField(response.body, 'FirmwareVersion', '');
                  
                  return JSON.stringify(result);
          timeout: 30s
          url: '{$API.URL}/redfish/v1/Systems/Self'
          tags:
            - tag: Application
              value: raw
            - tag: Application
              value: system
      discovery_rules:
        - uuid: 7e7510718d85473aa73a3b101f8f8b7c
          name: 'Drives Discovery'
          type: DEPENDENT
          key: graviton.drives.discovery
          delay: '0'
          filter:
            conditions:
              - macro: '{#STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          item_prototypes:
            - uuid: a862d7c84d5c4eba84e8327fb83dcee4
              name: 'Drive [{#STORAGE_UNIT}:{#NAME}] CapacityBytes'
              type: DEPENDENT
              key: 'graviton.drive.capacity_bytes[{#STORAGE_UNIT},{#NAME}]'
              delay: '0'
              units: b
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}''&&@.StorageUnit==''{#STORAGE_UNIT}'')].CapacityBytes.first()'
              master_item:
                key: graviton.sensors.drives
              tags:
                - tag: Application
                  value: disk_drives
              trigger_prototypes:
                - uuid: 227e008c9c994520b65b7e10cabe1291
                  expression: 'change(/Graviton by HTTP/graviton.drive.capacity_bytes[{#STORAGE_UNIT},{#NAME}])<>0'
                  name: 'Capacity of drive {#NAME} on storage unit {#STORAGE_UNIT} was changed was changed to [{ITEM.VALUE}B]'
                  priority: INFO
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: disk_drives
            - uuid: 8ac11742ed624572a981a74dd165cf70
              name: 'Drive [{#STORAGE_UNIT}:{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.drive.health[{#STORAGE_UNIT},{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}''&&@.StorageUnit==''{#STORAGE_UNIT}'')].Health.first()'
              master_item:
                key: graviton.sensors.drives
              tags:
                - tag: Application
                  value: disk_drives
              trigger_prototypes:
                - uuid: 681e6dbc29324f6590307c4271f67e8d
                  expression: 'last(/Graviton by HTTP/graviton.drive.health[{#STORAGE_UNIT},{#NAME}])<>"OK"'
                  name: 'Health of drive {#NAME} on storage unit [{#STORAGE_UNIT}] was changed to [{ITEM.VALUE}]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: disk_drives
            - uuid: d836085a48214891877062688c7900e3
              name: 'Drive [{#STORAGE_UNIT}:{#NAME}] Model'
              type: DEPENDENT
              key: 'graviton.drive.model[{#STORAGE_UNIT},{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}''&&@.StorageUnit==''{#STORAGE_UNIT}'')].Model.first()'
              master_item:
                key: graviton.sensors.drives
              tags:
                - tag: Application
                  value: disk_drives
              trigger_prototypes:
                - uuid: cdce8e2dea21485e8d0a7e25ec114c7f
                  expression: 'change(/Graviton by HTTP/graviton.drive.model[{#STORAGE_UNIT},{#NAME}])<>0'
                  name: 'Model of drive {#NAME} on storage unit {#STORAGE_UNIT} was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: disk_drives
            - uuid: 1f369e29676846809218c10005ef4c89
              name: 'Drive [{#STORAGE_UNIT}:{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.drive.state[{#STORAGE_UNIT},{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}''&&@.StorageUnit==''{#STORAGE_UNIT}'')].State.first()'
              master_item:
                key: graviton.sensors.drives
              tags:
                - tag: Application
                  value: disk_drives
              trigger_prototypes:
                - uuid: af6ddc49adf24dbc96a029c6a60faf52
                  expression: 'last(/Graviton by HTTP/graviton.drive.state[{#STORAGE_UNIT},{#NAME}])="Disabled"'
                  name: 'State of drive {#NAME} on storage unit [{#STORAGE_UNIT}] was changed to [Disabled]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: disk_drives
                - uuid: 8fbcf337a3964c6696cefe5f5a48bfb4
                  expression: 'last(/Graviton by HTTP/graviton.drive.state[{#STORAGE_UNIT},{#NAME}])<>"Enabled"'
                  name: 'State of drive {#NAME} on storage unit [{#STORAGE_UNIT}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of drive {#NAME} on storage unit [{#STORAGE_UNIT}] was changed to [Disabled]'
                      expression: 'last(/Graviton by HTTP/graviton.drive.state[{#STORAGE_UNIT},{#NAME}])="Disabled"'
                  tags:
                    - tag: component
                      value: disk_drives
          master_item:
            key: graviton.sensors.drives
          lld_macro_paths:
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#STATE}'
              path: $.State
            - lld_macro: '{#STORAGE_UNIT}'
              path: $.StorageUnit
        - uuid: f3d6f6a600624acc9e14eb09a14ab811
          name: 'Ethernet Interfaces Discovery'
          type: DEPENDENT
          key: graviton.ethernet_interfaces.discovery
          delay: '0'
          filter:
            conditions:
              - macro: '{#STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          item_prototypes:
            - uuid: 4c973967fe5e44849b071d990a37bbae
              name: 'Ethernet Interface [{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.ethernet_interface.health[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Health.first()'
              master_item:
                key: graviton.sensors.ethernet
              tags:
                - tag: Application
                  value: ethernet
              trigger_prototypes:
                - uuid: 77fcce316ee848faa0d81cf09a8df7b1
                  expression: 'last(/Graviton by HTTP/graviton.ethernet_interface.health[{#NAME}])<>"OK"'
                  name: 'Health of ethernet interface [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: ethernet
            - uuid: b23a1ce6faef4e2ab52d2a3d55a69c95
              name: 'Ethernet Interface [{#NAME}] LinkStatus'
              type: DEPENDENT
              key: 'graviton.ethernet_interface.link_status[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].LinkStatus.first()'
              master_item:
                key: graviton.sensors.ethernet
              tags:
                - tag: Application
                  value: ethernet
              trigger_prototypes:
                - uuid: 848afc60c009492ab14f6e61efceca6e
                  expression: 'last(/Graviton by HTTP/graviton.ethernet_interface.link_status[{#NAME}])<>"LinkUp"'
                  name: 'Link status of ethernet interface [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: ethernet
            - uuid: 5e2406040df24c5c96d78229838168cb
              name: 'Ethernet Interface [{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.ethernet_interface.state[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].State.first()'
              master_item:
                key: graviton.sensors.ethernet
              tags:
                - tag: Application
                  value: ethernet
              trigger_prototypes:
                - uuid: fe995a7088f64ac6909cda10673f1e2b
                  expression: 'last(/Graviton by HTTP/graviton.ethernet_interface.state[{#NAME}])="Disabled"'
                  name: 'State of ethernet interface [{#NAME}] was changed to [Disabled]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: ethernet
                - uuid: eadc949c4580475c897e6fae7211f1ae
                  expression: 'last(/Graviton by HTTP/graviton.ethernet_interface.state[{#NAME}])<>"Enabled"'
                  name: 'State of ethernet interface [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of ethernet interface [{#NAME}] was changed to [Disabled]'
                      expression: 'last(/Graviton by HTTP/graviton.ethernet_interface.state[{#NAME}])="Disabled"'
                  tags:
                    - tag: component
                      value: ethernet
          master_item:
            key: graviton.sensors.ethernet
          lld_macro_paths:
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#STATE}'
              path: $.State
        - uuid: 2cd85e2a691c42acbda0be75a16b61aa
          name: 'Fan Discovery'
          type: DEPENDENT
          key: graviton.fan.discovery
          delay: '0'
          filter:
            conditions:
              - macro: '{#STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          item_prototypes:
            - uuid: b077de2a98f34ef7a6d10b0bd2d012d6
              name: 'Fan Sensor [{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.fan.health[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Health.first()'
              master_item:
                key: graviton.sensors.fans
              tags:
                - tag: Application
                  value: fans
              trigger_prototypes:
                - uuid: 1d3878998f7b44bca5e1e3bdd0f721d7
                  expression: 'last(/Graviton by HTTP/graviton.fan.health[{#NAME}])="Critical"'
                  name: 'Health of fan sensor [{#NAME}] was changed to [Critical]'
                  priority: HIGH
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: fans
                - uuid: eb06ca3335b3482f976b9942a4368215
                  expression: 'last(/Graviton by HTTP/graviton.fan.health[{#NAME}])="Warning"'
                  name: 'Health of fan sensor [{#NAME}] was changed to [Warning]'
                  priority: WARNING
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Health of fan sensor [{#NAME}] was changed to [Critical]'
                      expression: 'last(/Graviton by HTTP/graviton.fan.health[{#NAME}])="Critical"'
                  tags:
                    - tag: component
                      value: fans
                - uuid: 3cb9c3f5496e4b639c362845619e12c4
                  expression: 'last(/Graviton by HTTP/graviton.fan.health[{#NAME}])<>"OK"'
                  name: 'Health of fan sensor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: WARNING
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Health of fan sensor [{#NAME}] was changed to [Warning]'
                      expression: 'last(/Graviton by HTTP/graviton.fan.health[{#NAME}])="Warning"'
                  tags:
                    - tag: component
                      value: fans
            - uuid: ddf62715000b41068b87e80fc6a6ae91
              name: 'Fan [{#NAME}] RPM'
              type: DEPENDENT
              key: 'graviton.fan.speed_rpm[{#NAME}]'
              delay: '0'
              units: '!RPM'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Reading.first()'
              master_item:
                key: graviton.sensors.fans
              tags:
                - tag: Application
                  value: fans
              trigger_prototypes:
                - uuid: 2fb841d25b834ec7b57d0650737bae25
                  expression: |
                    last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])>{#TR_UPPER_CRITICAL}
                    or
                    last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])<{#TR_LOWER_CRITICAL}
                  name: 'Value [{ITEM.VALUE} RPM] of fan sensor [{#NAME}] out of CRITICAL range ({#TR_LOWER_CRITICAL}-{#TR_UPPER_CRITICAL})'
                  priority: AVERAGE
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Value [{ITEM.VALUE} RPM] of fan sensor [{#NAME}] out of FATAL range ({#TR_LOWER_FATAL}-{#TR_UPPER_FATAL})'
                      expression: |
                        last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])>{#TR_UPPER_FATAL}
                        or
                        last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])<{#TR_LOWER_FATAL}
                  tags:
                    - tag: component
                      value: fans
                - uuid: ddeecfd3e51040508dc95128553ae97f
                  expression: |
                    last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])>{#TR_UPPER_FATAL}
                    or
                    last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])<{#TR_LOWER_FATAL}
                  name: 'Value [{ITEM.VALUE} RPM] of fan sensor [{#NAME}] out of FATAL range ({#TR_LOWER_FATAL}-{#TR_UPPER_FATAL})'
                  priority: HIGH
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: fans
                - uuid: 99a95c3013d94f8f951b804fbb2985fd
                  expression: |
                    last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])>{#TR_UPPER_NON_CRITICAL}
                    or
                    last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])<{#TR_LOWER_NON_CRITICAL}
                  name: 'Value [{ITEM.VALUE} RPM] of fan sensor [{#NAME}] out of NON CRITICAL range ({#TR_LOWER_NON_CRITICAL}-{#TR_UPPER_NON_CRITICAL})'
                  priority: WARNING
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Value [{ITEM.VALUE} RPM] of fan sensor [{#NAME}] out of CRITICAL range ({#TR_LOWER_CRITICAL}-{#TR_UPPER_CRITICAL})'
                      expression: |
                        last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])>{#TR_UPPER_CRITICAL}
                        or
                        last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])<{#TR_LOWER_CRITICAL}
                    - name: 'Value [{ITEM.VALUE} RPM] of fan sensor [{#NAME}] out of FATAL range ({#TR_LOWER_FATAL}-{#TR_UPPER_FATAL})'
                      expression: |
                        last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])>{#TR_UPPER_FATAL}
                        or
                        last(/Graviton by HTTP/graviton.fan.speed_rpm[{#NAME}])<{#TR_LOWER_FATAL}
                  tags:
                    - tag: component
                      value: fans
            - uuid: 6df8a6868e3c41ff9f4a9918954f91cc
              name: 'Fan Sensor [{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.fan.state[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].State.first()'
              master_item:
                key: graviton.sensors.fans
              tags:
                - tag: Application
                  value: fans
              trigger_prototypes:
                - uuid: 2defc496aab5453ca2e9648fb38db4f4
                  expression: 'last(/Graviton by HTTP/graviton.fan.state[{#NAME}])="Absent"'
                  name: 'State of fan sensor [{#NAME}] was changed to [Absent]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: fans
                - uuid: 6d173306214544bba6830cf692a6bfdd
                  expression: 'last(/Graviton by HTTP/graviton.fan.state[{#NAME}])<>"Enabled"'
                  name: 'State of fan sensor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of fan sensor [{#NAME}] was changed to [Absent]'
                      expression: 'last(/Graviton by HTTP/graviton.fan.state[{#NAME}])="Absent"'
                  tags:
                    - tag: component
                      value: fans
          master_item:
            key: graviton.sensors.fans
          lld_macro_paths:
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#STATE}'
              path: $.State
            - lld_macro: '{#TR_LOWER_CRITICAL}'
              path: $.LowerThresholdCritical
            - lld_macro: '{#TR_LOWER_FATAL}'
              path: $.LowerThresholdFatal
            - lld_macro: '{#TR_LOWER_NON_CRITICAL}'
              path: $.LowerThresholdNonCritical
            - lld_macro: '{#TR_UPPER_CRITICAL}'
              path: $.UpperThresholdCritical
            - lld_macro: '{#TR_UPPER_FATAL}'
              path: $.UpperThresholdFatal
            - lld_macro: '{#TR_UPPER_NON_CRITICAL}'
              path: $.UpperThresholdNonCritical
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  
                  var result = [];
                  
                  for (var i in valueArr) {
                    var element = valueArr[i];
                    if (element["{#TR_LOWER_CRITICAL}"] == "") {
                      element["{#TR_LOWER_CRITICAL}"] = "-9999999";
                    }
                    if (element["{#TR_LOWER_FATAL}"] == "") {
                      element["{#TR_LOWER_FATAL}"] = "-9999999";
                    }
                    if (element["{#TR_LOWER_NON_CRITICAL}"] == "") {
                      element["{#TR_LOWER_NON_CRITICAL}"] = "-9999999";
                    }
                  
                    if (element["{#TR_UPPER_CRITICAL}"] == "") {
                      element["{#TR_UPPER_CRITICAL}"] = "9999999";
                    }
                    if (element["{#TR_UPPER_FATAL}"] == "") {
                      element["{#TR_UPPER_FATAL}"] = "9999999";
                    }
                    if (element["{#TR_UPPER_NON_CRITICAL}"] == "") {
                      element["{#TR_UPPER_NON_CRITICAL}"] = "9999999";
                    }
                  
                    if (element["LowerThresholdCritical"] == "") {
                      element["LowerThresholdCritical"] = "-9999999";
                    }
                    if (element["LowerThresholdFatal"] == "") {
                      element["LowerThresholdFatal"] = "-9999999";
                    }
                    if (element["LowerThresholdNonCritical"] == "") {
                      element["LowerThresholdNonCritical"] = "-9999999";
                    }
                  
                    if (element["UpperThresholdCritical"] == "") {
                      element["UpperThresholdCritical"] = "9999999";
                    }
                    if (element["UpperThresholdFatal"] == "") {
                      element["UpperThresholdFatal"] = "9999999";
                    }
                    if (element["UpperThresholdNonCritical"] == "") {
                      element["UpperThresholdNonCritical"] = "9999999";
                    }
                  
                    result.push(element);
                  }
                  
                  return JSON.stringify(result);
        - uuid: 02752fe1fd244100976bdfa52a4c99a7
          name: 'Logical Volumes Discovery'
          type: DEPENDENT
          key: graviton.logical_volumes.discovery
          delay: '0'
          filter:
            conditions:
              - macro: '{#STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          item_prototypes:
            - uuid: ff18238e2c734824a70a2ca050b3339f
              name: 'Logical Volume [{#NAME}] CapacityBytes'
              type: DEPENDENT
              key: 'graviton.logical_volume.capatity_bytes[{#NAME}]'
              delay: '0'
              units: b
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].CapacityBytes.first()'
              master_item:
                key: graviton.sensors.volumes
              tags:
                - tag: Application
                  value: logical_volumes
              trigger_prototypes:
                - uuid: ce0c54d8498643298f73b5a6b3909153
                  expression: 'change(/Graviton by HTTP/graviton.logical_volume.capatity_bytes[{#NAME}])<>0'
                  name: 'Capacity of logical volume {#NAME} was changed to [{ITEM.VALUE} B]'
                  priority: INFO
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: logical_volumes
            - uuid: 0c582c12362a461eba2ea5fe5ecd34d2
              name: 'Logical Volume [{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.logical_volume.health[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Health.first()'
              master_item:
                key: graviton.sensors.volumes
              tags:
                - tag: Application
                  value: logical_volumes
              trigger_prototypes:
                - uuid: 24df9d1b55d94344991344ab7d47f4df
                  expression: 'last(/Graviton by HTTP/graviton.logical_volume.health[{#NAME}])<>"OK"'
                  name: 'Health of logical volume [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: logical_volumes
            - uuid: 919e7611f71d4b6fb49ea1e91af6e272
              name: 'Logical Volume [{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.logical_volume.state[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].State.first()'
              master_item:
                key: graviton.sensors.volumes
              tags:
                - tag: Application
                  value: logical_volumes
              trigger_prototypes:
                - uuid: 33919c09ece942f2820f7aadafa1426e
                  expression: 'last(/Graviton by HTTP/graviton.logical_volume.state[{#NAME}])="Disabled"'
                  name: 'State of logical volume [{#NAME}] was changed to [Disabled]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: logical_volumes
                - uuid: 71861d4caa574882aa410638228a0edb
                  expression: 'last(/Graviton by HTTP/graviton.logical_volume.state[{#NAME}])<>"Enabled"'
                  name: 'State of logical volume [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of logical volume [{#NAME}] was changed to [Disabled]'
                      expression: 'last(/Graviton by HTTP/graviton.logical_volume.state[{#NAME}])="Disabled"'
                  tags:
                    - tag: component
                      value: logical_volumes
          master_item:
            key: graviton.sensors.volumes
          lld_macro_paths:
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#STATE}'
              path: $.State
        - uuid: bedea3ee048549deb658a0af4dadb594
          name: 'Memory Discovery'
          type: DEPENDENT
          key: graviton.memory.discovery
          delay: '0'
          filter:
            conditions:
              - macro: '{#STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          item_prototypes:
            - uuid: 6ab3a9749ed44323aca5f4e0899c4a09
              name: 'Memory Module [{#NAME}] CapacityMiB'
              type: DEPENDENT
              key: 'graviton.memory.capacity_mb[{#NAME}]'
              delay: '0'
              units: '!MB'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].CapacityMiB.first()'
              master_item:
                key: graviton.sensors.memory
              tags:
                - tag: Application
                  value: memory
              trigger_prototypes:
                - uuid: 9ee921444bab4672b96bd222610e6016
                  expression: 'change(/Graviton by HTTP/graviton.memory.capacity_mb[{#NAME}])<>0'
                  name: 'Capacity of memory module [{#NAME}] was changed to [{ITEM.VALUE} MB]'
                  priority: INFO
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: memory
            - uuid: 02b6f799310648468644b9766e2a401d
              name: 'Memory Module [{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.memory.health[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Health.first()'
              master_item:
                key: graviton.sensors.memory
              tags:
                - tag: Application
                  value: memory
              trigger_prototypes:
                - uuid: 1ce5d5c9a6b54dc5b80a2313fa728d79
                  expression: 'last(/Graviton by HTTP/graviton.memory.health[{#NAME}])<>"OK"'
                  name: 'Health of memory module [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: memory
            - uuid: 8168e127b80e403287930297fc4ac860
              name: 'Memory Module [{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.memory.state[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].State.first()'
              master_item:
                key: graviton.sensors.memory
              tags:
                - tag: Application
                  value: memory
              trigger_prototypes:
                - uuid: b10dd4b3d99b426a8b4e566a2f8f8763
                  expression: 'last(/Graviton by HTTP/graviton.memory.state[{#NAME}])="Disabled"'
                  name: 'State of memory module [{#NAME}] was changed to [Disabled]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: memory
                - uuid: b444699bf680465fb8441fa38184e226
                  expression: 'last(/Graviton by HTTP/graviton.memory.state[{#NAME}])<>"Enabled"'
                  name: 'State of memory module [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of memory module [{#NAME}] was changed to [Disabled]'
                      expression: 'last(/Graviton by HTTP/graviton.memory.state[{#NAME}])="Disabled"'
                  tags:
                    - tag: component
                      value: memory
          master_item:
            key: graviton.sensors.memory
          lld_macro_paths:
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#STATE}'
              path: $.State
        - uuid: 13b22ac8f39f432ca1ca2a4fb9223a80
          name: 'Network Adapters Discovery'
          type: DEPENDENT
          key: graviton.net_adapters.discovery
          delay: '0'
          item_prototypes:
            - uuid: a11b4eca96e842209092a38598e5ba8c
              name: 'Network Adapter [{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.net_adapter.health[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Health.first()'
              master_item:
                key: graviton.sensors.net_adapters
              tags:
                - tag: Application
                  value: network_adapters
              trigger_prototypes:
                - uuid: d2f8d5419d424c10a1bf2859989cf769
                  expression: 'last(/Graviton by HTTP/graviton.net_adapter.health[{#NAME}])<>"OK"'
                  name: 'Health of network adapter [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: network_adapters
            - uuid: e9bbe18f0ef042748f562214b79720ff
              name: 'Network Adapter [{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.net_adapter.state[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].State.first()'
              master_item:
                key: graviton.sensors.net_adapters
              tags:
                - tag: Application
                  value: network_adapters
              trigger_prototypes:
                - uuid: baf72aae216d4fb4b16cb3ba08905941
                  expression: 'last(/Graviton by HTTP/graviton.net_adapter.state[{#NAME}])="Disabled"'
                  name: 'State of network adapter [{#NAME}] was changed to [Disabled]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: network_adapters
                - uuid: 2e0dab41f0d24be3a4dbc5ec356a895c
                  expression: 'last(/Graviton by HTTP/graviton.net_adapter.state[{#NAME}])<>"Enabled"'
                  name: 'State of network adapter [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of network adapter [{#NAME}] was changed to [Disabled]'
                      expression: 'last(/Graviton by HTTP/graviton.net_adapter.state[{#NAME}])="Disabled"'
                  tags:
                    - tag: component
                      value: network_adapters
          master_item:
            key: graviton.sensors.net_adapters
          lld_macro_paths:
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#STATE}'
              path: $.State
        - uuid: 3b15c37077b74dfeb36d250a03b22cc0
          name: 'Power Supplies Discovery'
          type: DEPENDENT
          key: graviton.power_supplies.discovery
          delay: '0'
          filter:
            conditions:
              - macro: '{#STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          item_prototypes:
            - uuid: 85357b935f0f457685bd17ba38964d5f
              name: 'Power Supply [{#NAME}] Fan_1 Speed'
              type: DEPENDENT
              key: 'graviton.power_supplies.fan_1[{#NAME}]'
              delay: '0'
              units: '!RPM'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Fan_1.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: 283f65d21a5c4c908b3ae427deff4467
              name: 'Power Supply [{#NAME}] Fan_2 Speed'
              type: DEPENDENT
              key: 'graviton.power_supplies.fan_2[{#NAME}]'
              delay: '0'
              units: '!RPM'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Fan_2.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: 38c4245f59e34aafb2bee349dc8aedf6
              name: 'Power Supply [{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.power_supplies.health[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Health.first()'
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
              trigger_prototypes:
                - uuid: 180917e435f847f58906017a60b9e963
                  expression: 'last(/Graviton by HTTP/graviton.power_supplies.health[{#NAME}])="Critical"'
                  name: 'Health of power supply [{#NAME}] was changed to [Critical]'
                  priority: HIGH
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: power_supplies
                - uuid: 95af3934ef0444f9bb4d8697670361df
                  expression: 'last(/Graviton by HTTP/graviton.power_supplies.health[{#NAME}])="Warning"'
                  name: 'Health of power supply [{#NAME}] was changed to [Warning]'
                  priority: WARNING
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Health of power supply [{#NAME}] was changed to [Critical]'
                      expression: 'last(/Graviton by HTTP/graviton.power_supplies.health[{#NAME}])="Critical"'
                  tags:
                    - tag: component
                      value: power_supplies
                - uuid: fafb7c15af554460900ee62326d8a841
                  expression: 'last(/Graviton by HTTP/graviton.power_supplies.health[{#NAME}])<>"Normal"'
                  name: 'Health of power supply [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Health of power supply [{#NAME}] was changed to [Warning]'
                      expression: 'last(/Graviton by HTTP/graviton.power_supplies.health[{#NAME}])="Warning"'
                  tags:
                    - tag: component
                      value: power_supplies
            - uuid: a3f54233af2a489c88b3da07228558ba
              name: 'Power Supply [{#NAME}] LineInputCurrent'
              type: DEPENDENT
              key: 'graviton.power_supplies.line_input_current[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!A'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].LineInputCurrent.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: ff3563feca334664a259a35707f6d597
              name: 'Power Supply [{#NAME}] LineInputVoltage'
              type: DEPENDENT
              key: 'graviton.power_supplies.line_input_voltage[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!V'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].LineInputVoltage.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: 6df7d3c8eb974d55bc5b5738865433b4
              name: 'Power Supply [{#NAME}] LineInputWatts'
              type: DEPENDENT
              key: 'graviton.power_supplies.line_input_watts[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!W'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].LineInputWatts.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: f20a49378c994433aa8ac7ffec30db19
              name: 'Power Supply [{#NAME}] PowerCapacityCurrent'
              type: DEPENDENT
              key: 'graviton.power_supplies.power_capacity_current[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!A'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].PowerCapacityCurrent.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: d1a6f2876097478582af71b44db76e4c
              name: 'Power Supply [{#NAME}] PowerCapacityVoltage'
              type: DEPENDENT
              key: 'graviton.power_supplies.power_capacity_voltage[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!V'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].PowerCapacityVoltage.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: 53d50704e6504114967b9c158dd4072a
              name: 'Power Supply [{#NAME}] PowerCapacityWatts'
              type: DEPENDENT
              key: 'graviton.power_supplies.power_capacity_watts[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!W'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].PowerCapacityWatts.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: 79bf3bdb696643c6b2a40dba3a30caab
              name: 'Power Supply [{#NAME}] PowerOutputCurrent'
              type: DEPENDENT
              key: 'graviton.power_supplies.power_output_current[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!A'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].PowerOutputCurrent.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: 64f1f5f565ea402bb83da5aa457ced2a
              name: 'Power Supply [{#NAME}] PowerOutputVoltage'
              type: DEPENDENT
              key: 'graviton.power_supplies.power_output_voltage[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!V'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].PowerOutputVoltage.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: f3ce39a1168e42e7ac39bd3da2f59a68
              name: 'Power Supply [{#NAME}] PowerOutputWatts'
              type: DEPENDENT
              key: 'graviton.power_supplies.power_output_watts[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!W'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].PowerOutputWatts.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: 5e9ac624347147869b64991aad87e463
              name: 'Power Supply [{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.power_supplies.state[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].State.first()'
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
              trigger_prototypes:
                - uuid: 8a4319921b9b4c8091d9e380b9d6e616
                  expression: 'last(/Graviton by HTTP/graviton.power_supplies.state[{#NAME}])="Absent"'
                  name: 'State of power supply [{#NAME}] was changed to [Absent]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: power_supplies
                - uuid: 7a5c8589e84c4208998491b5569a5420
                  expression: 'last(/Graviton by HTTP/graviton.power_supplies.state[{#NAME}])<>"Enabled"'
                  name: 'State of power supply [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of power supply [{#NAME}] was changed to [Absent]'
                      expression: 'last(/Graviton by HTTP/graviton.power_supplies.state[{#NAME}])="Absent"'
                  tags:
                    - tag: component
                      value: power_supplies
            - uuid: 0321868d58514e4e9bca920fb9708600
              name: 'Power Supply [{#NAME}] Temperature_1'
              type: DEPENDENT
              key: 'graviton.power_supplies.temp_1[{#NAME}]'
              delay: '0'
              units: '!°C'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Temperature_1.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
            - uuid: a91b36320add48459b825383c806e1c3
              name: 'Power Supply [{#NAME}] Temperature_2'
              type: DEPENDENT
              key: 'graviton.power_supplies.temp_2[{#NAME}]'
              delay: '0'
              units: '!°C'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Temperature_2.first()'
                - type: REGEX
                  parameters:
                    - '([0-9.,]+)'
                    - \1
              master_item:
                key: graviton.sensors.power_supplies
              tags:
                - tag: Application
                  value: power_supplies
          master_item:
            key: graviton.sensors.power_supplies
          lld_macro_paths:
            - lld_macro: '{#FAN_1}'
              path: $.Fan_1
            - lld_macro: '{#FAN_2}'
              path: $.Fan_2
            - lld_macro: '{#LINE_INPUT_CURRENT}'
              path: $.LineInputCurrent
            - lld_macro: '{#LINE_INPUT_VOLTAGE}'
              path: $.LineInputVoltage
            - lld_macro: '{#LINE_INPUT_WATTS}'
              path: $.LineInputWatts
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#POWER_CAPACITY_CURRENT}'
              path: $.PowerCapacityCurrent
            - lld_macro: '{#POWER_CAPACITY_VOLTAGE}'
              path: $.PowerCapacityVoltage
            - lld_macro: '{#POWER_CAPACITY_WATTS}'
              path: $.PowerCapacityWatts
            - lld_macro: '{#POWER_OUTPUT_CURRENT}'
              path: $.PowerOutputCurrent
            - lld_macro: '{#POWER_OUTPUT_VOLTAGE}'
              path: $.PowerOutputVoltage
            - lld_macro: '{#POWER_OUTPUT_WATTS}'
              path: $.PowerOutputWatts
            - lld_macro: '{#STATE}'
              path: $.State
            - lld_macro: '{#TEMPERATURE_1}'
              path: $.Temperature_1
            - lld_macro: '{#TEMPERATURE_2}'
              path: $.Temperature_2
          overrides:
            - name: 'Not Discover Fan_1'
              step: '1'
              filter:
                conditions:
                  - macro: '{#FAN_1}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: Fan_1
                  discover: NO_DISCOVER
            - name: 'Not Discover Fan_2'
              step: '2'
              filter:
                conditions:
                  - macro: '{#FAN_2}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: Fan_2
                  discover: NO_DISCOVER
            - name: 'Not Discover LineInputCurrent'
              step: '3'
              filter:
                conditions:
                  - macro: '{#LINE_INPUT_CURRENT}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: LineInputCurrent
                  discover: NO_DISCOVER
            - name: 'Not Discover LineInputVoltage'
              step: '4'
              filter:
                conditions:
                  - macro: '{#LINE_INPUT_VOLTAGE}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: LineInputVoltage
                  discover: NO_DISCOVER
            - name: 'Not Discover LineInputWatts'
              step: '5'
              filter:
                conditions:
                  - macro: '{#LINE_INPUT_WATTS}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: LineInputWatts
                  discover: NO_DISCOVER
            - name: 'Not Discover PowerCapacityCurrent'
              step: '6'
              filter:
                conditions:
                  - macro: '{#POWER_CAPACITY_CURRENT}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: PowerCapacityCurrent
                  discover: NO_DISCOVER
            - name: 'Not Discover PowerCapacityVoltage'
              step: '7'
              filter:
                conditions:
                  - macro: '{#POWER_CAPACITY_VOLTAGE}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: PowerCapacityVoltage
                  discover: NO_DISCOVER
            - name: 'Not Discover PowerCapacityWatts'
              step: '8'
              filter:
                conditions:
                  - macro: '{#POWER_CAPACITY_WATTS}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: PowerCapacityWatts
                  discover: NO_DISCOVER
            - name: 'Not Discover PowerOutputCurrent'
              step: '9'
              filter:
                conditions:
                  - macro: '{#POWER_OUTPUT_CURRENT}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: PowerOutputCurrent
                  discover: NO_DISCOVER
            - name: 'Not Discover PowerOutputVoltage'
              step: '10'
              filter:
                conditions:
                  - macro: '{#POWER_OUTPUT_VOLTAGE}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: PowerOutputVoltage
                  discover: NO_DISCOVER
            - name: 'Not Discover PowerOutputWatts'
              step: '11'
              filter:
                conditions:
                  - macro: '{#POWER_OUTPUT_WATTS}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: PowerOutputWatts
                  discover: NO_DISCOVER
            - name: 'Not Discover Temperature_1'
              step: '12'
              filter:
                conditions:
                  - macro: '{#TEMPERATURE_1}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: Temperature_1
                  discover: NO_DISCOVER
            - name: 'Not Discover Temperature_2'
              step: '13'
              filter:
                conditions:
                  - macro: '{#TEMPERATURE_2}'
                    value: N\/A
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: LIKE
                  value: Temperature_2
                  discover: NO_DISCOVER
        - uuid: a65bed2872174cfab79c53bbb1d141df
          name: 'Processors Discovery'
          type: DEPENDENT
          key: graviton.processors.discovery
          delay: '0'
          filter:
            conditions:
              - macro: '{#STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          item_prototypes:
            - uuid: 1436280fb30e47bab616921c0bbc91ca
              name: 'Processor [{#NAME}] TotalCores'
              type: DEPENDENT
              key: 'graviton.processors.cores[{#NAME}]'
              delay: '0'
              units: '!cores'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].TotalCores.first()'
              master_item:
                key: graviton.sensors.processors
              tags:
                - tag: Application
                  value: processors
              trigger_prototypes:
                - uuid: da9a60d4a0ac49c69027b092787b6296
                  expression: 'change(/Graviton by HTTP/graviton.processors.cores[{#NAME}])=1'
                  name: 'Number of cores of processor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: processors
            - uuid: eb694e4f5bf14ebe898b0b13206f7994
              name: 'Processor [{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.processors.health[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Health.first()'
              master_item:
                key: graviton.sensors.processors
              tags:
                - tag: Application
                  value: processors
              trigger_prototypes:
                - uuid: 9e28df7837704ddb8e3c557eda0cdb02
                  expression: 'last(/Graviton by HTTP/graviton.processors.health[{#NAME}])<>"OK"'
                  name: 'Health of processor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: processors
            - uuid: 5304b1491d6844b3af775023e4fbf24e
              name: 'Processor [{#NAME}] Model'
              type: DEPENDENT
              key: 'graviton.processors.model[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Model.first()'
              master_item:
                key: graviton.sensors.processors
              tags:
                - tag: Application
                  value: processors
              trigger_prototypes:
                - uuid: cecb6a5c4ca54d96b6a16146472a11b1
                  expression: 'change(/Graviton by HTTP/graviton.processors.model[{#NAME}])=1'
                  name: 'Model of processor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: processors
            - uuid: b517f9210a0948e098aa6201622107fd
              name: 'Processor [{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.processors.state[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].State.first()'
              master_item:
                key: graviton.sensors.processors
              tags:
                - tag: Application
                  value: processors
              trigger_prototypes:
                - uuid: 6946ae4d88454f239eba761c030a782d
                  expression: 'last(/Graviton by HTTP/graviton.processors.state[{#NAME}])="Absent"'
                  name: 'State of processor [{#NAME}] was changed to [Absent]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: processors
                - uuid: fc4e06026e2d4b0dac9df041d38076f1
                  expression: 'last(/Graviton by HTTP/graviton.processors.state[{#NAME}])<>"Enabled"'
                  name: 'State of processor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of processor [{#NAME}] was changed to [Absent]'
                      expression: 'last(/Graviton by HTTP/graviton.processors.state[{#NAME}])="Absent"'
                  tags:
                    - tag: component
                      value: processors
            - uuid: 111ef970151c42c1b636057528d42ff9
              name: 'Processor [{#NAME}] TotalThreads'
              type: DEPENDENT
              key: 'graviton.processors.threads[{#NAME}]'
              delay: '0'
              units: '!threads'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].TotalThreads.first()'
              master_item:
                key: graviton.sensors.processors
              tags:
                - tag: Application
                  value: processors
              trigger_prototypes:
                - uuid: 680ffe7078c74064a6499c95fac349bf
                  expression: 'change(/Graviton by HTTP/graviton.processors.threads[{#NAME}])=1'
                  name: 'Number of threads of processor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: processors
          master_item:
            key: graviton.sensors.processors
          lld_macro_paths:
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#STATE}'
              path: $.State
        - uuid: d506954864134453901c7d85d4329860
          name: 'Storage Controllers Discovery'
          type: DEPENDENT
          key: graviton.storage_controllers.discovery
          delay: '0'
          filter:
            conditions:
              - macro: '{#STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          item_prototypes:
            - uuid: 0ce5c7bcb93b4b53b80e099b1df4c785
              name: 'Storage Controller [{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.storage_controller.health[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Health.first()'
              master_item:
                key: graviton.sensors.storage_controllers
              tags:
                - tag: Application
                  value: storage_controllers
              trigger_prototypes:
                - uuid: 67b36b71dc5f4c51a47d503271d2190e
                  expression: 'last(/Graviton by HTTP/graviton.storage_controller.health[{#NAME}])<>"OK"'
                  name: 'Health of storage controller [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: storage_controllers
            - uuid: 65af7bc655bd4b35b821a288f26e4c03
              name: 'Storage Controller [{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.storage_controller.state[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].State.first()'
              master_item:
                key: graviton.sensors.storage_controllers
              tags:
                - tag: Application
                  value: storage_controllers
              trigger_prototypes:
                - uuid: 3174a6134c2a4fe3a53b853bd0d9452f
                  expression: 'last(/Graviton by HTTP/graviton.storage_controller.state[{#NAME}])="Disabled"'
                  name: 'State of storage controller [{#NAME}] was changed to [Disabled]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: storage_controllers
                - uuid: daf40d9c827d4c24bc857e55312c7955
                  expression: 'last(/Graviton by HTTP/graviton.storage_controller.state[{#NAME}])<>"Enabled"'
                  name: 'State of storage controller [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of storage controller [{#NAME}] was changed to [Disabled]'
                      expression: 'last(/Graviton by HTTP/graviton.storage_controller.state[{#NAME}])="Disabled"'
                  tags:
                    - tag: component
                      value: storage_controllers
          master_item:
            key: graviton.sensors.storage_controllers
          lld_macro_paths:
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#STATE}'
              path: $.State
        - uuid: 1f7fe89917af453da1316241bbbee5c8
          name: 'Temperature Discovery'
          type: DEPENDENT
          key: graviton.temp.discovery
          delay: '0'
          filter:
            conditions:
              - macro: '{#STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          item_prototypes:
            - uuid: 707360c44e3b411bb47d67ff6ef9eea2
              name: 'Temperature Sensor [{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.temp.health[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Health.first()'
              master_item:
                key: graviton.sensors.temp
              tags:
                - tag: Application
                  value: temperature
              trigger_prototypes:
                - uuid: a28d85f468b74daea7e75c80f60a88dd
                  expression: 'last(/Graviton by HTTP/graviton.temp.health[{#NAME}])="Critical"'
                  name: 'Health of temperature sensor [{#NAME}] was changed to [Critical]'
                  priority: HIGH
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: temperature
                - uuid: 755e03f388a14b1e903a4e6f14103526
                  expression: 'last(/Graviton by HTTP/graviton.temp.health[{#NAME}])="Warning"'
                  name: 'Health of temperature sensor [{#NAME}] was changed to [Warning]'
                  priority: WARNING
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Health of temperature sensor [{#NAME}] was changed to [Critical]'
                      expression: 'last(/Graviton by HTTP/graviton.temp.health[{#NAME}])="Critical"'
                  tags:
                    - tag: component
                      value: temperature
                - uuid: 374d002739d94d6a8562e8ef97fbdc91
                  expression: 'last(/Graviton by HTTP/graviton.temp.health[{#NAME}])<>"OK"'
                  name: 'Health of temperature sensor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Health of temperature sensor [{#NAME}] was changed to [Warning]'
                      expression: 'last(/Graviton by HTTP/graviton.temp.health[{#NAME}])="Warning"'
                  tags:
                    - tag: component
                      value: temperature
            - uuid: eda0230d4c6b48a78dfdd120d5b91d21
              name: 'Temperature Sensor [{#NAME}] ReadingCelsius'
              type: DEPENDENT
              key: 'graviton.temp.reading_celsius[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!°C'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].ReadingCelsius.first()'
              master_item:
                key: graviton.sensors.temp
              tags:
                - tag: Application
                  value: temperature
              trigger_prototypes:
                - uuid: 88370b4ae69a430ca7158b0369e53263
                  expression: |
                    last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])>{#TR_UPPER_CRITICAL}
                    or
                    last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])<{#TR_LOWER_CRITICAL}
                  name: 'Value [{ITEM.VALUE}°C] of temperature sensor [{#NAME}] out of CRITICAL range ({#TR_LOWER_CRITICAL}-{#TR_UPPER_CRITICAL})'
                  priority: AVERAGE
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Value [{ITEM.VALUE}°C] of temperature sensor [{#NAME}] out of FATAL range ({#TR_LOWER_FATAL}-{#TR_UPPER_FATAL})'
                      expression: |
                        last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])>{#TR_UPPER_FATAL}
                        or
                        last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])<{#TR_LOWER_FATAL}
                  tags:
                    - tag: component
                      value: temperature
                - uuid: 66d9d70c4fd34d34bee063031f65e7a0
                  expression: |
                    last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])>{#TR_UPPER_FATAL}
                    or
                    last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])<{#TR_LOWER_FATAL}
                  name: 'Value [{ITEM.VALUE}°C] of temperature sensor [{#NAME}] out of FATAL range ({#TR_LOWER_FATAL}-{#TR_UPPER_FATAL})'
                  priority: HIGH
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: temperature
                - uuid: 1015313c4a074bd8a301b8233d12155c
                  expression: |
                    last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])>{#TR_UPPER_NON_CRITICAL}
                    or
                    last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])<{#TR_LOWER_NON_CRITICAL}
                  name: 'Value [{ITEM.VALUE}°C] of temperature sensor [{#NAME}] out of NON CRITICAL range ({#TR_LOWER_NON_CRITICAL}-{#TR_UPPER_NON_CRITICAL})'
                  priority: WARNING
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Value [{ITEM.VALUE}°C] of temperature sensor [{#NAME}] out of CRITICAL range ({#TR_LOWER_CRITICAL}-{#TR_UPPER_CRITICAL})'
                      expression: |
                        last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])>{#TR_UPPER_CRITICAL}
                        or
                        last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])<{#TR_LOWER_CRITICAL}
                    - name: 'Value [{ITEM.VALUE}°C] of temperature sensor [{#NAME}] out of FATAL range ({#TR_LOWER_FATAL}-{#TR_UPPER_FATAL})'
                      expression: |
                        last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])>{#TR_UPPER_FATAL}
                        or
                        last(/Graviton by HTTP/graviton.temp.reading_celsius[{#NAME}])<{#TR_LOWER_FATAL}
                  tags:
                    - tag: component
                      value: temperature
            - uuid: cedd361be5fb41ae8abf781c46ef26c6
              name: 'Temperature Sensor [{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.temp.state[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].State.first()'
              master_item:
                key: graviton.sensors.temp
              tags:
                - tag: Application
                  value: temperature
              trigger_prototypes:
                - uuid: 18ec7888b53f4bd6a681455a9e60f8b9
                  expression: 'last(/Graviton by HTTP/graviton.temp.state[{#NAME}])="Absent"'
                  name: 'State of temperature sensor [{#NAME}] was changed to [Absent]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: temperature
                - uuid: 39d5b74ce2ad479a9294caadd0eab078
                  expression: 'last(/Graviton by HTTP/graviton.temp.state[{#NAME}])<>"Enabled"'
                  name: 'State of temperature sensor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of temperature sensor [{#NAME}] was changed to [Absent]'
                      expression: 'last(/Graviton by HTTP/graviton.temp.state[{#NAME}])="Absent"'
                  tags:
                    - tag: component
                      value: temperature
          master_item:
            key: graviton.sensors.temp
          lld_macro_paths:
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#STATE}'
              path: $.State
            - lld_macro: '{#TR_LOWER_CRITICAL}'
              path: $.LowerThresholdCritical
            - lld_macro: '{#TR_LOWER_FATAL}'
              path: $.LowerThresholdFatal
            - lld_macro: '{#TR_LOWER_NON_CRITICAL}'
              path: $.LowerThresholdNonCritical
            - lld_macro: '{#TR_UPPER_CRITICAL}'
              path: $.UpperThresholdCritical
            - lld_macro: '{#TR_UPPER_FATAL}'
              path: $.UpperThresholdFatal
            - lld_macro: '{#TR_UPPER_NON_CRITICAL}'
              path: $.UpperThresholdNonCritical
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  
                  var result = [];
                  
                  for (var i in valueArr) {
                    var element = valueArr[i];
                    if (element["{#TR_LOWER_CRITICAL}"] == "") {
                      element["{#TR_LOWER_CRITICAL}"] = "-9999999";
                    }
                    if (element["{#TR_LOWER_FATAL}"] == "") {
                      element["{#TR_LOWER_FATAL}"] = "-9999999";
                    }
                    if (element["{#TR_LOWER_NON_CRITICAL}"] == "") {
                      element["{#TR_LOWER_NON_CRITICAL}"] = "-9999999";
                    }
                  
                    if (element["{#TR_UPPER_CRITICAL}"] == "") {
                      element["{#TR_UPPER_CRITICAL}"] = "9999999";
                    }
                    if (element["{#TR_UPPER_FATAL}"] == "") {
                      element["{#TR_UPPER_FATAL}"] = "9999999";
                    }
                    if (element["{#TR_UPPER_NON_CRITICAL}"] == "") {
                      element["{#TR_UPPER_NON_CRITICAL}"] = "9999999";
                    }
                  
                    if (element["LowerThresholdCritical"] == "") {
                      element["LowerThresholdCritical"] = "-9999999";
                    }
                    if (element["LowerThresholdFatal"] == "") {
                      element["LowerThresholdFatal"] = "-9999999";
                    }
                    if (element["LowerThresholdNonCritical"] == "") {
                      element["LowerThresholdNonCritical"] = "-9999999";
                    }
                  
                    if (element["UpperThresholdCritical"] == "") {
                      element["UpperThresholdCritical"] = "9999999";
                    }
                    if (element["UpperThresholdFatal"] == "") {
                      element["UpperThresholdFatal"] = "9999999";
                    }
                    if (element["UpperThresholdNonCritical"] == "") {
                      element["UpperThresholdNonCritical"] = "9999999";
                    }
                  
                    result.push(element);
                  }
                  
                  return JSON.stringify(result);
        - uuid: f67e2627127e4a2ca4e0c8be8d4d10c7
          name: 'Voltage Discovery'
          type: DEPENDENT
          key: graviton.voltage.discovery
          delay: '0'
          filter:
            conditions:
              - macro: '{#STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          item_prototypes:
            - uuid: 9509c6ef26304c96a44cc9be4d57f1c6
              name: 'Voltage Sensor [{#NAME}] Health'
              type: DEPENDENT
              key: 'graviton.voltage.health[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].Health.first()'
              master_item:
                key: graviton.sensors.voltage
              tags:
                - tag: Application
                  value: voltage
              trigger_prototypes:
                - uuid: 3fae96d9ac9c44faa047a0ad3c7e65f3
                  expression: 'last(/Graviton by HTTP/graviton.voltage.health[{#NAME}])="Critical"'
                  name: 'Health of voltage sensor [{#NAME}] was changed to [Critical]'
                  priority: HIGH
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: voltage
                - uuid: baa93f708c77482ab3c87ecd62d1b372
                  expression: 'last(/Graviton by HTTP/graviton.voltage.health[{#NAME}])="Warning"'
                  name: 'Health of voltage sensor [{#NAME}] was changed to [Warning]'
                  priority: WARNING
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Health of voltage sensor [{#NAME}] was changed to [Critical]'
                      expression: 'last(/Graviton by HTTP/graviton.voltage.health[{#NAME}])="Critical"'
                  tags:
                    - tag: component
                      value: voltage
                - uuid: 140de7bec822441cb3780c2c925d399e
                  expression: 'last(/Graviton by HTTP/graviton.voltage.health[{#NAME}])<>"OK"'
                  name: 'Health of voltage sensor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Health of voltage sensor [{#NAME}] was changed to [Warning]'
                      expression: 'last(/Graviton by HTTP/graviton.voltage.health[{#NAME}])="Warning"'
                  tags:
                    - tag: component
                      value: voltage
            - uuid: f8a40acd265b4cc4bde78ad979ee6307
              name: 'Voltage Sensor [{#NAME}] ReadingVolts'
              type: DEPENDENT
              key: 'graviton.voltage.reading_volts[{#NAME}]'
              delay: '0'
              value_type: FLOAT
              units: '!V'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].ReadingVolts.first()'
              master_item:
                key: graviton.sensors.voltage
              tags:
                - tag: Application
                  value: voltage
              trigger_prototypes:
                - uuid: e6358138c46b4835850a638793627896
                  expression: |
                    last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])>{#TR_UPPER_CRITICAL}
                    or
                    last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])<{#TR_LOWER_CRITICAL}
                  name: 'Value [{ITEM.VALUE} V] of voltage sensor [{#NAME}] out of CRITICAL range ({#TR_LOWER_CRITICAL}-{#TR_UPPER_CRITICAL})'
                  priority: AVERAGE
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Value [{ITEM.VALUE} V] of voltage sensor [{#NAME}] out of FATAL range ({#TR_LOWER_FATAL}-{#TR_UPPER_FATAL})'
                      expression: |
                        last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])>{#TR_UPPER_FATAL}
                        or
                        last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])<{#TR_LOWER_FATAL}
                  tags:
                    - tag: component
                      value: voltage
                - uuid: 6b24d282edb74640bd3494518a4411e3
                  expression: |
                    last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])>{#TR_UPPER_FATAL}
                    or
                    last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])<{#TR_LOWER_FATAL}
                  name: 'Value [{ITEM.VALUE} V] of voltage sensor [{#NAME}] out of FATAL range ({#TR_LOWER_FATAL}-{#TR_UPPER_FATAL})'
                  priority: HIGH
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: voltage
                - uuid: 15ee6c05b4d14cc68b2d4f8e8b28f620
                  expression: |
                    last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])>{#TR_UPPER_NON_CRITICAL}
                    or
                    last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])<{#TR_LOWER_NON_CRITICAL}
                  name: 'Value [{ITEM.VALUE} V] of voltage sensor [{#NAME}] out of NON CRITICAL range ({#TR_LOWER_NON_CRITICAL}-{#TR_UPPER_NON_CRITICAL})'
                  priority: WARNING
                  manual_close: 'YES'
                  dependencies:
                    - name: 'Value [{ITEM.VALUE} V] of voltage sensor [{#NAME}] out of CRITICAL range ({#TR_LOWER_CRITICAL}-{#TR_UPPER_CRITICAL})'
                      expression: |
                        last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])>{#TR_UPPER_CRITICAL}
                        or
                        last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])<{#TR_LOWER_CRITICAL}
                    - name: 'Value [{ITEM.VALUE} V] of voltage sensor [{#NAME}] out of FATAL range ({#TR_LOWER_FATAL}-{#TR_UPPER_FATAL})'
                      expression: |
                        last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])>{#TR_UPPER_FATAL}
                        or
                        last(/Graviton by HTTP/graviton.voltage.reading_volts[{#NAME}])<{#TR_LOWER_FATAL}
                  tags:
                    - tag: component
                      value: voltage
            - uuid: 753db21892ff4fe1b86d8c2bff5f2cc5
              name: 'Voltage Sensor [{#NAME}] State'
              type: DEPENDENT
              key: 'graviton.voltage.state[{#NAME}]'
              delay: '0'
              trends: '0'
              value_type: TEXT
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@.Name==''{#NAME}'')].State.first()'
              master_item:
                key: graviton.sensors.voltage
              tags:
                - tag: Application
                  value: voltage
              trigger_prototypes:
                - uuid: ec7156e3aec64abfb08662a1883e75e2
                  expression: 'last(/Graviton by HTTP/graviton.voltage.state[{#NAME}])="Absent"'
                  name: 'State of voltage sensor [{#NAME}] was changed to [Absent]'
                  priority: WARNING
                  manual_close: 'YES'
                  tags:
                    - tag: component
                      value: voltage
                - uuid: b9aced4250514f979ba542ffff0f30a5
                  expression: 'last(/Graviton by HTTP/graviton.voltage.state[{#NAME}])<>"Enabled"'
                  name: 'State of voltage sensor [{#NAME}] was changed to [{ITEM.VALUE}]'
                  priority: INFO
                  manual_close: 'YES'
                  dependencies:
                    - name: 'State of voltage sensor [{#NAME}] was changed to [Absent]'
                      expression: 'last(/Graviton by HTTP/graviton.voltage.state[{#NAME}])="Absent"'
                  tags:
                    - tag: component
                      value: voltage
          master_item:
            key: graviton.sensors.voltage
          lld_macro_paths:
            - lld_macro: '{#NAME}'
              path: $.Name
            - lld_macro: '{#STATE}'
              path: $.State
            - lld_macro: '{#TR_LOWER_CRITICAL}'
              path: $.LowerThresholdCritical
            - lld_macro: '{#TR_LOWER_FATAL}'
              path: $.LowerThresholdFatal
            - lld_macro: '{#TR_LOWER_NON_CRITICAL}'
              path: $.LowerThresholdNonCritical
            - lld_macro: '{#TR_UPPER_CRITICAL}'
              path: $.UpperThresholdCritical
            - lld_macro: '{#TR_UPPER_FATAL}'
              path: $.UpperThresholdFatal
            - lld_macro: '{#TR_UPPER_NON_CRITICAL}'
              path: $.UpperThresholdNonCritical
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  
                  var result = [];
                  
                  for (var i in valueArr) {
                    var element = valueArr[i];
                    if (element["{#TR_LOWER_CRITICAL}"] == "") {
                      element["{#TR_LOWER_CRITICAL}"] = "-9999999";
                    }
                    if (element["{#TR_LOWER_FATAL}"] == "") {
                      element["{#TR_LOWER_FATAL}"] = "-9999999";
                    }
                    if (element["{#TR_LOWER_NON_CRITICAL}"] == "") {
                      element["{#TR_LOWER_NON_CRITICAL}"] = "-9999999";
                    }
                  
                    if (element["{#TR_UPPER_CRITICAL}"] == "") {
                      element["{#TR_UPPER_CRITICAL}"] = "9999999";
                    }
                    if (element["{#TR_UPPER_FATAL}"] == "") {
                      element["{#TR_UPPER_FATAL}"] = "9999999";
                    }
                    if (element["{#TR_UPPER_NON_CRITICAL}"] == "") {
                      element["{#TR_UPPER_NON_CRITICAL}"] = "9999999";
                    }
                  
                    if (element["LowerThresholdCritical"] == "") {
                      element["LowerThresholdCritical"] = "-9999999";
                    }
                    if (element["LowerThresholdFatal"] == "") {
                      element["LowerThresholdFatal"] = "-9999999";
                    }
                    if (element["LowerThresholdNonCritical"] == "") {
                      element["LowerThresholdNonCritical"] = "-9999999";
                    }
                  
                    if (element["UpperThresholdCritical"] == "") {
                      element["UpperThresholdCritical"] = "9999999";
                    }
                    if (element["UpperThresholdFatal"] == "") {
                      element["UpperThresholdFatal"] = "9999999";
                    }
                    if (element["UpperThresholdNonCritical"] == "") {
                      element["UpperThresholdNonCritical"] = "9999999";
                    }
                  
                    result.push(element);
                  }
                  
                  return JSON.stringify(result);
      macros:
        - macro: '{$API.PASSWORD}'
          value: '<password>'
          description: 'GRAVITON Redfish user password.'
        - macro: '{$API.URL}'
          value: 'https://<host>:<port>'
          description: 'GRAVITON Redfish API URL in the format `<scheme>://<host>:<port>`.'
        - macro: '{$API.USER}'
          value: '<username>'
          description: 'GRAVITON Redfish username.'
